gtkmain: Terminate two loops early
authorPeter Bloomfield <PeterBloomfield@bellsouth.net>
Mon, 17 Dec 2018 17:04:10 +0000 (12:04 -0500)
committerPeter Bloomfield <PeterBloomfield@bellsouth.net>
Mon, 17 Dec 2018 17:04:10 +0000 (12:04 -0500)
In propagate_event_{down,up}(), set handled_event to TRUE if a widget is
unrealized, so as to terminate the corresponding loop early.

See https://gitlab.gnome.org/GNOME/gtk/merge_requests/442

gtk/gtkmain.c

index ecd9f4478181cfb727b1f7ee1d404c94b91f8481..35a5e77003ebb3f14c9fb01c3e44d624241e9586 100644 (file)
@@ -2439,6 +2439,8 @@ propagate_event_up (GtkWidget *widget,
       else if (gtk_widget_get_realized (widget))
         handled_event = gtk_widget_event (widget, event);
 
+      handled_event |= !gtk_widget_get_realized (widget);
+
       tmp = gtk_widget_get_parent (widget);
       g_object_unref (widget);
 
@@ -2492,6 +2494,8 @@ propagate_event_down (GtkWidget *widget,
         }
       else if (gtk_widget_get_realized (widget))
         handled_event = _gtk_widget_captured_event (widget, event);
+
+      handled_event |= !gtk_widget_get_realized (widget);
     }
   g_list_free_full (widgets, (GDestroyNotify)g_object_unref);